package exceptions;

/**
 *
 * @author Douglas & Vinícius
 */
public class LexerException extends Exception {

    /*String com a descrição do tipo de erro*/
    ;private String tipoDeErro;
    /* Lexema onde o erro ocorreu */
    private String lexema;

    /*Coluna onde ocorreu o erro*/
    private int posicao;

    /*linha onde ocorreu o erro*/
    private int linha;

    public LexerException(String tipoDoErro, String lexema, int linha, int posicao) {

        this.tipoDeErro = tipoDoErro;
        this.lexema = lexema;
        this.linha = linha;
        this.posicao = posicao;
    }

    /*
     * Devolve uma String com o informações sobre o erro ocorrido, apenas o erro.
     */
    public String getTipoDeErro() {
        return tipoDeErro;
    }

    
    /*
     * Devolve uma String com o lexema 'defeituoso'.
     */
    public String getLexema() {
        return lexema;
    }
    
    
    /*
     * Devolve a linha onde o erro ocorreu;
     */
     public int getLinha(){
         return linha;
     }

     /*
     * Devolve a coluna onde o erro ocorreu;
     */
     public int getPosicao(){
         return posicao;
     }


    /*
     * Devolve uma String com o informações sobre o erro ocorrido, todas as informações sobre o erro;.
     */
    @Override
    public String getMessage() {
        return tipoDeErro + ": \"" + lexema + "\", linha: " + linha + ", coluna: " + posicao;
    }
}
